package com.yunbao.core.respones;


/**
 * <p>
 * 统一响应类
 * </p>
 *
 * @author 安能
 * @date 2019年6月24日09:56:06
 */
public final class ResultBuilder {

    public ResultBuilder() {
    }

    public static <T> Result<T> result(int code, String message,T data) {
        return Result.<T>builder()
                .code(code)
                .message(message)
                .data(data)
                .build();
    }

    /**
     * 返回成功消息
     *
     * @return 成功消息
     */
    public static <T> Result success() {
        return Result.builder()
                .code(ResultEnum.SUCCESS.getCode())
                .message(ResultEnum.SUCCESS.getMessage())
                .build();


    }

    /**
     * 返回成功消息
     *
     * @param success 返回内容
     * @return 成功消息
     */
  /*  public static  <T> Result<T> success(String success) {
        return Result.<T>builder()
                .code(ResultEnum.SUCCESS.getCode())
                .success(success)
                .build();
    }*/

    /**
     * 返回成功消息
     *
     * @param data 数据对象
     * @return 成功消息
     */
    public static <T> Result<T> success(T data) {
        return Result.<T>builder()
                .code(ResultEnum.SUCCESS.getCode())
                .message(ResultEnum.SUCCESS.getMessage())
                .data(data)
                .build();
    }

    /**
     * 返回成功消息
     *
     * @param resultEnum 状态码,返回内容
     * @return 成功消息
     */
    public static <T> Result<T> success(ResultEnum resultEnum) {
        return Result.<T>builder()
                .code(resultEnum.getCode())
                .message(resultEnum.getMessage())
                .build();
    }

    /**
     * 返回成功消息
     *
     * @param resultEnum 状态码,返回内容
     * @param data       数据对象
     * @return 成功消息
     */
    public static <T> Result<T> success(ResultEnum resultEnum, T data) {
        return Result.<T>builder()
                .code(resultEnum.getCode())
                .message(resultEnum.getMessage())
                .data(data)
                .build();
    }


    /**
     * 返回错误消息
     *
     * @return 错误消息
     */
    public static Result errorInfo() {
        return Result.builder()
                .code(ResultEnum.FAIL.getCode())
                .message(ResultEnum.FAIL.getMessage())
                .build();
    }

    /* */

    /**
     * 返回错误消息
     *
     * @param msg 返回内容
     * @return 错误消息
     *//*
    public static Result errorInfo(String success) {
        return Result.builder()
                .code(ResultEnum.FAIL.getCode())
                .success(success)
                .build();
    }
    /**
     * 自定义错误返回错误消息
     *
     * @param resultCode 状态码
     * @param success    返回内容
     * @return 错误消息
     */
    public static Result errorInfo(int resultCode, String msg) {
        return Result.builder()
                .code(resultCode)
                .message(msg)
                .build();
    }

    /**
     * 根据枚举返回错误消息
     *
     * @param resultEnum 状态码 返回内容
     * @return 错误消息
     */
    public static Result errorInfo(ResultEnum resultEnum) {
        return Result.builder()
                .code(resultEnum.getCode())
                .message(resultEnum.getMessage())
                .build();
    }

    /**
     * 自定义错误返回错误消息
     *
     * @param resultEnum 状态码 返回内容
     * @param data       返回的数据
     * @return 错误消息
     */
    public static <T> Result<T> errorInfo(ResultEnum resultEnum, T data) {
        return Result.<T>builder()
                .code(resultEnum.getCode())
                .message(resultEnum.getMessage())
                .data(data)
                .build();
    }

}